package com.hex.ds.hdrs.common.constant;

/**
 * 系统错误码
 * ERROR_2
 * ERROR_3 http对外请求异常
 * ERROR_4、ERROR_5、ERROR_6开头的错误码为预留错误码
 * ERROR_9 开头为外部接口错误相关
 * Created by tomnic.wang
 * 2017/11/2.
 */
public enum ErrorCode {

    ERROR_000000("000000", "应用程序内部异常"),
    ERROR_000001("000001", "解密异常"),
    //ERROR_01开头为spring相关错误
    ERROR_010000("010000", "Spring WebApplicationContext中未找到制定的对象服务"),

    ERROR_300001("300001", "HTTP调用返回信息为空"),
    ERROR_300002("300002", "HTTP调用失败"),
    ERROR_300003("300003", "HTTP返回值JSON类型转换异常"),
    ERROR_300004("300004", "HTTP请求上传文件未正常获取!"),

    ERROR_400000("400000", "未知异常"),
    ERROR_4100002("4100002", "编码异常"),
    ERROR_4000004("4000004", "XML字符串转对象异常"),
    ERROR_4000005("4000005", "对象转XML字符串异常"),
    ERROR_4000006("4000006", "拆包出错"),
    ERROR_4000007("4000007", "外部接口查询失败"),
    ERROR_4000008("4000008", "对象之间copy赋值异常"),
    ERROR_4000996("4000996", "外部接口返回异常，有错误描述"),
    ERROR_4000997("4000997", "现在没有数据稍后再来"),
    ERROR_4000998("4000998", "策略查询失败"),
    ERROR_4000999("4000999", "外部接口查询异常"),
    ERROR_4999999("4999999", "无满足该条件记录"),

    ERROR_700001("700001", "查询内容正在查询中"),

    ERROR_900001("900001", "传入参数为空"),
    ERROR_900002("900002", "请求报文异常"),
    ERROR_900003("900003", "传入参数不合法"),
    ERROR_900004("900004", "本地公积金账号为空"),
    ERROR_800001("800001", "数据已存在不同新增"),
    ERROR_900005("900005", "类调用异常"),
    ERROR_900006("900006", "时间获取异常"),
    ERROR_900007("900007", "权限不足"),
    ERROR_900008("900008", "已达最大并发数"),
    ERROR_900009("900009", "用户不存在"),
    ERROR_900010("900010", "用户当前状态不允许访问"),
    ERROR_900011("900011", "服务暂不可用"),
    ERROR_900012("900012", "不在可访问时间段"),
    ERROR_900013("900013", "配置异常"),
    ERROR_900014("900014", "请求的目标接口地址不存在"),
    ERROR_900015("900015", "缓存数据获取异常"),
    ERROR_900016("900016", "未获得数据保鲜度"),
    ERROR_900017("900017", "未获得接口查询策略"),
    ERROR_900018("900018", "查询策略配置错误"),
    ERROR_900019("900019", "未知的查询策略类型"),
    ERROR_900020("900020", "有效期参数未提供或参数非法"),
    ERROR_900021("900021", "文件生成下载失败"),

    ERROR_500000("500000", "EDMS接口被关闭"),
    ERROR_500001("500001", "接口被手工熔断"),
    ERROR_500002("500002", "未知熔断状态"),
    ERROR_500003("500003", "时间外不允许查询"),

    ERROR_600000("600000", "下载错误"),
    ERROR_600001("600001", "解压错误"),
    ERROR_600002("600002", "解析xml入库错误"),
    ERROR_600003("600003", "数据入库错误"),
    ERROR_600004("600004", "文件格式错误"),
    ERROR_600005("600005", "文件导入错误"),

    ERROR_800000("800000", "该中心非Master,处于休眠中"),
    ERROR_800002("800002", "该中心正在成为Master中"),
    ERROR_800004("800004", "该中心正在消亡中"),
    ERROR_800006("800006", "节点IP验证失败"),
    ERROR_800008("800008", "节点端口验证失败"),
    ERROR_800010("800010", "节点已停止"),
    ERROR_800012("800012", "节点不存在"),
    ERROR_800014("800014", "应用Session创建异常"),
    ERROR_800015("800015", "应用Session不存在"),
    ERROR_800016("800016", "应用已停止"),
    ERROR_800018("800018", "中心获取Master信息异常"),
    ERROR_800020("800020", "节点Session不存在"),

    ERROR_810000("810000", "中心初始化配置异常"),
    ERROR_810002("810002", "分发器初始化异常"),
    ERROR_810003("810003", "处理器初始化异常"),
    ERROR_810004("810004", "加载器初始化异常"),
    ERROR_810006("810006", "作业/任务定义初始化异常"),
    ERROR_810008("810008", "最新完成作业/任务初始化异常"),

    ERROR_820000("820000", "任务分发异常，appSession不活动"),
    ERROR_820001("820001", "任务分发异常，app资源数不足"),
    ERROR_820002("820002", "任务分发异常，agentSession不活动"),
    ERROR_820003("820003", "任务分发异常，agent资源数不足"),
    ERROR_820004("820004", "任务分发异常，任务的上游依赖存在未完成，依赖作业:{}，依赖任务:{}"),
    ERROR_820005("820005", "任务分发异常，发送agent失败"),
    ERROR_820006("820006", "任务分发异常，任务信息DB更新失败"),
    ERROR_820007("820007", "任务分发异常，应用组下无有效的appSession"),
    ERROR_820008("820008", "任务分发异常，选择应用的权重获取异常"),
    ERROR_820009("820009", "任务分发异常，应用组下选择应用异常"),
    ERROR_820010("820010", "注册异常，应节点下无启动的应用"),
    ERROR_820011("820011", "任务分发异常，添加正在执行队列内存数据不一致回滚"),
    ERROR_820012("820012", "任务暂停执行"),

    ERROR_821000("821000", "任务处理异常，存在互斥任务,任务编码为：{}"),
    ERROR_821001("821001", "任务处理异常，存在互斥作业"),
    ERROR_821002("821002", "任务处理异常，存在上游依赖任务"),
    ERROR_821003("821003", "任务处理异常，存在上游依赖作业,依赖作业：{}，依赖任务：{}"),
    ERROR_821004("821004", "任务处理异常，DB校验上游依赖未完成,依赖作业：{}，依赖任务：{}"),
    ERROR_821006("821006", "任务处理异常，还未到执行时间"),

    ERROR_821005("821005", "任务处理异常，添加可执行队列内存数据不一致回滚"),

    ERROR_822000("822000", "任务加载异常，任务添加到待处理queue失败"),

    ERROR_823000("823000", "任务触发异常，本作业下的下一任务状态异常"),
    ERROR_823001("823001", "任务触发异常，本作业下的下一任务未获取到"),

    ERROR_830001("830001", "节点token无效或已失效，请重新注册"),
    ERROR_830002("830002", "license已过期，请联系管理员"),
    ERROR_830003("830003", "获取license异常"),
    ERROR_830004("830004", "mac地址未在license中认证"),
    ERROR_830005("830005", "校验mac地址异常"),
    ERROR_830006("830006", "中心注册IP不属于本机IP"),

    ERROR_840001("840001", "有效节点数超过限制数，不允许注册"),
    ERROR_840002("840002", "节点配置数超过限制数，不允许添加"),
    ERROR_840003("840003", "任务定义数超过限制数，不允许添加"),
    ERROR_840004("840004", "节点总并发数超过限制数，不允许添加"),
    ERROR_840005("840005", "应用总并发数超过限制数，不允许添加"),

    ERROR_850001("850001", "界面修改作业状态异常"),
    ERROR_850002("850002", "有任务状态处理中，作业状态不处理"),
    ERROR_850003("850003", "作业状态为处理完成不允许修改为暂停中"),
    ERROR_851001("851001", "界面修改任务状态异常"),
    ERROR_851002("851002", "任务状态处理中，不允许修改"),
    ERROR_851003("851003", "任务状态处理中|处理完成，不允许修改为置虚"),
    ERROR_851004("851004", "修改置虚出现异常"),
    ERROR_852001("852001", "修改的状态与原状态相同，无需修改"),

    ERROR_860000("860000", "刷新线程，减少线程异常"),

    ERROR_870000("870000", "AGENT安装失败"),
    ERROR_870001("870001", "AGENT名称不能为空"),
    ERROR_870002("870002", "AGENT名称已经存在"),

    ERROR_888000("888000", "该排序策略不存在"),
    ERROR_888001("888001", "排序策略未定制"),
    ERROR_888002("888002", "按优先级顺序--异常"),
    ERROR_888003("888003", "按优先级且资源数顺序,资源数由大到小--异常"),
    ERROR_888004("888004", "按优先级且资源数顺序,资源数由小到大--异常"),
    ERROR_888005("888005", "按下游依赖数量--异常"),
    ERROR_888006("888006", "按下一级依赖数量--异常"),
    ERROR_888007("888007", "按时间最早先执行--异常"),
    ERROR_888008("888008", "按下游依赖使用资源数总数  大的先做--异常"),
    ERROR_888009("888009", "按下一级依赖使用资源数总数  大的先做--异常"),

    ERROR_890001("890001", "有序的任务Code集合为空"),
    ERROR_890002("890002", "有序的任务中当前任务的状态为暂停"),
    ERROR_890003("890003", "有序的任务中获取当前任务异常"),

    ERROR_910001("910001", "请选择要删除的应用组"),

    ERROR_910002("910002", "参数异常"),
    ERROR_910003("910002", "依赖展示异常"),
    ERROR_910004("910004", "任务定义不存在"),
    ERROR_910005("910005", "任务实例不存在"),

    ERROR_910006("910006", "该标签已使用 不能删除！"),
    ERROR_910007("910007", "日期表达式不能为空！"),
    ERROR_910008("910008", "自定义的日期表达式格式错误！"),
    ERROR_910009("910009", "新增作业应用编码不存在！"),
    ERROR_910010("910010", "调度服务重启失败！"),
    ;

    public String getCode() {
        return code;
    }

    private void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    private void setMessage(String message) {
        this.message = message;
    }

    private String code;
    private String message;

    private ErrorCode(String code, String message) {
        this.code = code;
        this.message = message;
    }

    public static String getMessage(String code) {
        ErrorCode[] errorCodes = values();
        for (ErrorCode errorCode : errorCodes) {
            if (errorCode.code.equals(code)) {
                return errorCode.message;
            }
        }
        return code;
    }
}
